#ifndef PLAYER_STRUCTURES_H
#define PLAYER_STRUCTURES_H

#include <string>
#include <set>
// Gaming skills structure
struct GamingSkills {
    int recoilControl;       // Recoil control
    int positioning;         // Positioning
    int sniping;             // Sniping
    int sprayTransfer;       // Spray transfer
    int movementControl;     // Movement control
    int mobility;            // Mobility
    int jumpControl;         // Jump control
    int utilities;           // Utilities usage
    int leadership;          // Leadership ability
    int clutchAbility;       // Clutch ability
    int mentality;           // Mentality
};

// Professional stats structure
struct ProfessionalStats {
    int kills;
    int deaths;
    double kdRatio;
    int matchRecord;
    int mvpCount;
    int globalTop100Count;
    int globalTop50Count;
    int globalTop10Count;
    int globalTop3Count;
    int globalTop1Count;
};

// Player information structure
struct PlayerInfo {
    std::string firstName;
    std::string lastName;
    std::string fullName;
    std::string nationality;
    int age;
    int agreeableness;       // Agreeableness
    int passion;             // Passion
    double economicCapacity; // Economic capacity
    bool isProfessional;
    std::string region;      // Region
    int teamId;
    std::string teamName;
    double salary;
    double externalFactor;   // External factor affecting player abilities (default: 0)
    
    // Friends system
    std::set <int> friends;   // Set of friend player IDs
    int maxFriends;          // Maximum number of friends allowed
    int baseMaxFriends;      // Base maximum friends (for tracking increases)
    
    // Default constructor
    PlayerInfo() : maxFriends(10), baseMaxFriends(10) {}
};

// Complete player structure
struct Player {
    int id;
    GamingSkills skills;
    double overallScore;     // Overall score
    PlayerInfo info;
    ProfessionalStats proStats;
    int globalRanking;
    int domesticRanking;
};

#endif // PLAYER_STRUCTURES_H
